package model

import (
	"context"
	"fmt"
	"lib/db"
	"time"
)

func (My_user) TableName() string {
	return "my_user"
}

type My_user struct {
	Id             uint64  `:"id"`       // ID
	GroupId        int     `:"group_id"` // 组别ID
	Username       string  `:"username"` // 用户名
	Nickname       string  `:"nickname"` // 昵称
	PasswordHash   string  `gorm:"column:password;type:varchar(128);NOT NULL" json:"-"`
	Password       string  `gorm:"-" json:"password,omitempty"`
	Pwd            string  `:"pwd"`
	Salt           string  `:"salt"`           // 密码盐
	Email          string  `:"email"`          // 电子邮箱
	Mobile         string  `:"mobile"`         // 手机号
	Avatar         string  `:"avatar"`         // 头像
	Level          int     `:"level"`          // 等级
	K1             int     `:"k1"`             // 等级
	K2             int     `:"k2"`             // 等级
	Gender         int     `:"gender"`         // 性别
	Money          float64 `:"money"`          // 余额
	Score          float64 `:"score"`          // 积分
	Successions    int     `:"successions"`    // 连续登录天数
	Maxsuccessions int     `:"maxsuccessions"` // 最大连续登录天数
	Prevtime       int     `:"prevtime"`       // 上次登录时间
	Logintime      int     `:"logintime"`      // 登录时间
	Loginip        string  `:"loginip"`        // 登录IP
	Loginfailure   int     `:"loginfailure"`   // 失败次数
	Joinip         string  `:"joinip"`         // 加入IP
	Jointime       int     `:"jointime"`       // 加入时间
	Createtime     int     `:"createtime"`     // 创建时间
	CreateTime     string  `:"create_time"`    // 创建时间
	Updatetime     int     `:"updatetime"`     // 更新时间
	Token          string  `:"token"`          // Token
	Status         string  `:"status"`         // 状态
	Verification   string  `:"verification"`   // 验证
	Q              string  `:"q"`
	Q1             string  `:"q1"`
	Qrcode         string  `:"qrcode"`
	Qrcode1        string  `:"qrcode1"`
	Pid            uint64  `:"pid"`          // 上级id
	ChNum          int     `:"ch_num"`       // 我的下级人数
	WxappOpenid    string  `:"wxapp_openid"` // 微信appid
	Unionid        string  `:"unionid"`      // 微信unionid
	KsHis          int     `:"ks_his"`       // 总记录
	JyName         string  `:"jy_name"`      // 交易所姓名
	JyAccount      string  `:"jy_account"`   // 交易所帐号
	Ips            string  `:"ips"`
	Ppid           uint64  `:"ppid"` // 上上级别id
	DyTure         int     `:"dy_ture"`
	DyName         string  `:"dy_name"`     // 抖音名称
	DyUsername     string  `:"dy_username"` // 抖音帐号
	ZScore         int     `:"z_score"`
	JMoney         float64 `:"j_money"`
	Point          float64 `:"point"`
	OldLevel       int     `:"old_level"`
	IsTask         int     `:"is_task"`
	F              int     `:"f"`
	IsZ            int     `:"is_z"`
	Bio            string  `:"bio"`
	JtStr          string  `:"jt_str"`
	Jt             int     `:"jt"`
	Jhs            int     `:"jhs"`
	Zz             int     `:"zz"`
	N              int     `:"n"`
	AliOpenid      string  `:"ali_openid"`
	L              int     `:"l"`
	J              int     `:"j"`
	C              int     `:"c"`
	EndDate        int     `:"end_date"`
	Beizhu         string  `:"beizhu"`
	T              int     `:"t"`
	Ql             int     `:"ql"`
	Y              int64   `:"y"`
	Gold           float64 `:"gold"`
	Tz             float64 `:"tz"`
	OldTz          float64 `:"old_tz"`
	Tz1            float64 `:"tz1"`
	Tz2            float64 `:"tz2"`
	Tz3            float64 `:"tz3"`
	Tz4            float64 `:"tz4"`
	Sl             float64 `:"sl"`
	WPid           uint64  `:"w_pid"`   // 上级id
	WPPid          uint64  `:"w_ppid"`  // 上上级id
	W              int     `:"w"`       // 上上级id
	WLevel         int64   `:"w_level"` // 上上级id

	WName    string `:"w_name"`
	WAccount string `:"w_account"`
	Kl       int    `:"kl"`
	Fh       int    `:"fh"`
}

type GameMoney struct {
	Mode     string  `json:"mode" " binding:"required"`
	Num      float64 `json:"num" " binding:"required"`
	GameId   string  `json:"gameId" " binding:"required"`
	GameType int     `json:"gameType" " binding:"required"`
	Type     int     `json:"type" binding:"required"`
}

type GameTeiqiu struct {
	Type    int     `json:"type" `
	Num     float64 `json:"num" `
	Quality int     `json:"quality" `
	Tqid    int     `json:"tqid" `
}
type GameTeiqiuArr struct {
	GameTeiqiuMap []*GameTeiqiu `json:"tieqiuMap" binding:"required"`
	OrderId       string        `json:"orderId" binding:"required"`
}

// id  num newLevel  应该就可以了吧
type GameLevel struct {
	ID       int     `json:"id" binding:"required"`
	Num      float64 `json:"num"  binding:"required"`
	LevelNum int     `json:"levelNum"  binding:"required"`
	Mode     string  `json:"mode" `
}
type GameTeiqiuSwitch struct {
	Type int `json:"type" binding:"required"`
	ID   int `json:"id" binding:"required"`
}
type My_GameMoney struct {
	Id       uint64  `:"id"`        // ID
	Uid      uint64  `:"uid"`       // 组别ID
	Mobile   string  `:"mobile"`    // 用户名
	Mode     string  `:"mode"`      // 用户名
	Type     int     `:"type"`      // 昵称
	S        int     `:"s"`         // 昵称
	D        int     `:"d"`         // 昵称
	Days     int     `:"days"`      // 昵称
	GameType int     `:"game_type"` // 昵称
	GameId   string  `:"game_id"`   // 昵称
	Num      float64 `:"num"`
}

func (My_GameMoney) TableName() string {
	return "my_game_moneys"
}

type My_Tieqiu struct {
	Id         uint64     `:"id"`          // ID
	Uid        uint64     `:"uid"`         // 组别ID
	Type       int        `:"type"`        // 昵称
	Level      int        `:"level"`       // 昵称
	Cl         float64    `:"cl"`          // 昵称
	Ycl        float64    `:"ycl"`         // 昵称
	Switch     int        `:"swicth"`      // 用户登记
	Tqid       int        `:"tqid"`        // 用户登记
	Status     int        `:"status"`      // 0申请1确定 2自己取消了
	CreateTime *time.Time `:"create_time"` //时间
}

func (My_Tieqiu) TableName() string {
	return "my_tieqiu"
}

type My_TieqiuLevel struct {
	Id         uint64     `:"id"`          // ID
	Uid        uint64     `:"uid"`         // 组别ID
	Tid        uint64     `:"tid"`         // 组别ID
	Num        float64    `:"num"`         // 组别ID
	Level      int        `:"level"`       // 昵称
	Demo       string     `:"demo"`        // 昵称
	CreateTime *time.Time `:"create_time"` //时间
}

func (My_TieqiuLevel) TableName() string {
	return "my_tieqiulog"
}

type My_Tiekuang struct {
	Id   uint64  `:"id"`   // ID
	Uid  uint64  `:"uid"`  // 组别ID
	Type int     `:"type"` // 昵称
	Num  float64 `:"num"`  // 昵称
}

func (My_Tiekuang) TableName() string {
	return "my_tiekuang"
}

type My_GameMoneyTow struct {
	Id       uint64  `:"id"`        // ID
	Uid      uint64  `:"uid"`       // 组别ID
	Mobile   string  `:"mobile"`    // 用户名
	Mode     string  `:"mode"`      // 用户名
	Type     int     `:"type"`      // 昵称
	S        int     `:"s"`         // 昵称
	D        int     `:"d"`         // 昵称
	Days     int     `:"days"`      // 昵称
	RoomId   int8    `:"room_id"`   // 昵称
	GameType int     `:"game_type"` // 昵称
	GameId   string  `:"game_id"`   // 昵称
	Num      float64 `:"num"`
}

func (My_GameMoneyTowSl) TableName() string {
	return "my_game_moneys_sl"
}

type My_GameMoneyTowSl struct {
	Id       uint64  `:"id"`        // ID
	Uid      uint64  `:"uid"`       // 组别ID
	Mobile   string  `:"mobile"`    // 用户名
	Mode     string  `:"mode"`      // 用户名
	Type     int     `:"type"`      // 昵称
	S        int     `:"s"`         // 昵称
	D        int     `:"d"`         // 昵称
	Days     int     `:"days"`      // 昵称
	RoomId   int8    `:"room_id"`   // 昵称
	GameType int     `:"game_type"` // 昵称
	GameId   string  `:"game_id"`   // 昵称
	Num      float64 `:"num"`
}

func (My_GameMoneyTow) TableName() string {
	return "my_game_moneys_tow"
}

type AddGameMoney struct {
	GameId   string       `json:"gameId" binding:"required"`
	GameType int          `json:"gameType" binding:"required"`
	Games    []*GamesInfo `json:"games" binding:"required"`
}

type GamesInfo struct {
	Uid  uint64  `json:"uid" binding:"required"`
	Num  float64 `json:"num" binding:"required"`
	Mode string  `json:"mode"`
}

type GameMoneyPoint struct {
	Mode   string  `json:"mode" " binding:"required"`
	Num    float64 `json:"num" " binding:"required"`
	GameId string  `json:"gameId" " binding:"required"`
}

type My_GamePoints struct {
	Id         uint64     `:"id"`          // ID
	Uid        uint64     `:"uid"`         // 组别ID
	Mobile     string     `:"mobile"`      // 用户名
	Mode       string     `:"mode"`        // 得到的信息id
	GameType   int        `:"game_type"`   //
	CreateTime *time.Time `:"create_time"` //时间
}

func (My_GamePoints) TableName() string {
	return "my_game_points"
}

type GameMoneyTzReq struct {
	GameType int `:"gameType"` //
}

type GameMoneyTzResp struct {
	MoneyType int     `:"money_type"` //'0','1','2','3','4'  tz tz1
	Money     float64 `:"money"`      //
}

type MyGamePk struct {
	Id         uint64     `:"id"`        // ID
	Uid        uint64     `:"uid"`       // 组别ID
	Mobile     string     `:"mobile"`    // 用户名
	GameType   int        `:"game_type"` //
	Days       int        `:"days"`
	Money      float64    `:"money"`
	MoneyType  int        `:"game_type"`   //
	CreateTime *time.Time `:"create_time"` //时间
}

func (MyGamePk) TableName() string {
	return "my_game_pk"
}

type GameMoneyWeekReq struct {
	GameId int `:"gameId"` //
}
type MyGameWeeks struct {
	Id    uint64  `:"id"`    // ID
	Uid   uint64  `:"uid"`   // 组别ID
	L     int     `:"l"`     // 用户登记
	Q     int     `:"q"`     //第几期
	Days  int     `:"days"`  //最后领取时间
	Weeks int     `:"weeks"` //
	Yl    float64 `:"yl"`
}

func (MyGameWeeks) TableName() string {
	return "my_game_week"
}

type MyMyFlish struct {
	Id         uint64     `:"id"`     // ID
	Uid        uint64     `:"uid"`    // 组别ID
	F          uint64     `:"f"`      // 用户登记
	L          int        `:"l"`      // 用户登记
	Days       int        `:"days"`   // 用户登记
	TDays      int        `:"t_days"` // 用户登记
	Sl         float64    `:"sl"`
	Cl         float64    `:"cl"`
	Ycl        float64    `:"ycl"`
	EndTime    int        `:"end_time"`    // 用户登记
	Szq        int        `:"szq"`         // 已使用周期
	CreateTime *time.Time `:"create_time"` //时间
}

func (MyMyFlish) TableName() string {
	return "my_my_flish"
}

type MyFlish struct {
	Id    uint64  `:"id"`    // ID
	Level int     `:"level"` // 用户登记
	Name  string  `:"name"`
	Sl    float64 `:"sl"`
	Cl    float64 `:"cl"`
	Zcl   float64 `:"zcl"`
	Gl    int     `:"gl"`
	Zq    int     `:"zq"` // 用户登记
}

func (MyFlish) TableName() string {
	return "my_flish"
}

type MyMyFlishSS struct {
	MyMyFlish
	Y    int    `:"y"`
	Name string `:"name"`
}

func (s *MyMyFlish) FuzzName(id uint64) string {
	//获取左右的玉
	ctx := context.TODO()
	name := ""
	key := fmt.Sprintf("yuaoo_%d", id)
	db.GetRedisClient().Get(ctx, key).Scan(&name)
	if name == "" {
		var ss MyFlish
		db.GetDb().Where("id = ?", id).First(&ss)
		db.GetRedisClient().Set(ctx, key, ss.Name, 0)
		name = ss.Name
	}
	return name
}

type MySongs struct {
	Uid     uint64 `:"uid"`     // 组别ID
	Mobile  string `:"mobile"`  // 用户名
	Puid    uint64 `:"puid"`    // 组别ID
	Pmobile string `:"pmobile"` // 用户名
}

func (MySongs) TableName() string {
	return "my_songs"
}
